Data storage in most personal and enterprise computer systems is generally handled by a file system which generally stores any type of data in a file. Thus, very large data objects, such as movies, and very small data objects, such as a single line of text used as a batch file, are stored similarly, with similar file overhead of a file name, location in a tree structure, modification date, permissions, etc. For small data units, a file system can be inefficient in that the overhead of maintaining all of the files associated information may be excessive and unnecessary. For large data objects, such as a video file, the problem is that the file system provides no way for storing structured data in a file, thus a large file has to be managed as a single monolithic entity and it cannot be split into smaller files or merged into a larger file.
Relational databases were invented when computer memory was measured in KB, and storage space was measured in KB and CPU speed was measured in KHz. Storage was slow, very expensive, consumed lot of space and power, storage access was mostly sequential with inefficient random access. System memory was slow and expensive too. Relational databases, as a data representation technology, were developed to minimize memory, storage and CPU usage.
Relational database technology is generally about creating fixed width containers called tables to store fixed size entities called records each made of fixed size columns Tables have a well-defined static relationship between them, or specifically, one more columns of a table have a relationship to one or more columns of another table. Having fixed size makes locating and reading data easier, for example, to read 3rd column of 4th row, by already knowing the size of a row and column, byte offset is calculated and data is read from that byte offset. Database queries and views are supported by creating temporary tables and pulling values from columns of different tables. While variable length columns are supported, their storage and management are not as optimal as fixed length columns.
When a hierarchical data is translated to flat data like in a relational database, the translation is one way; the focus of this translation is to save storage and processing. So translating back from a relational data to hierarchical data is difficult and sometimes impossible, because a single table may be shared by multiple business objects.